home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / fdimg / oh!.2hd / OH!DEN_B.LZH / TOOLS / CALEMU / TNCALE__.C next >
Text File  |  1995-03-20  |  3KB  |  154 lines

  1. #include    <TNB.h>
  2.  
  3. extern    int    InpESC;        //ESCフラグ
  4. extern    UNchar    *InpChPt;    //チェック開始ポインタ ('%'の場所)
  5. extern    UNchar    *InpPt;        //管理ポインタ
  6. extern    UNchar    *InpBuf,*InpBuf_E;
  7.  
  8. UNchar    *ICP=0;    //チェック開始ポインタ ('%'の場所)
  9.  
  10. #define strlen(SR)            \
  11. ({ char *_p = (SR);int _l = 0;        \
  12.     while (*_p ++) _l++;        \
  13.     (_l);                \
  14. })
  15.  
  16. /*--- 各ルーチン ---*/
  17. /*::::::: [?] ::::::::
  18.     *------------タブレット情報
  19. :::::::::::::::::::::*/
  20. void    CmHatena()
  21. {
  22.     ;
  23. //MakeTable();
  24. }
  25. /*::::::: [VS] ::::::::
  26.     *--------------- サイズコマンド タブレットの仕様
  27.                     *  10byte [別表]
  28. :::::::::::::::::::::*/
  29. void    CmVS()
  30. {
  31. extern    UNchar    AFTMAX;
  32. OutData(10,&AFTMAX);
  33. }
  34. /*::::::: [__B] ::::::::
  35.     *---------------  メニューストリップのブロックNO.をチェックするコマンド
  36.                     *  2byte [!],ブロックNO.+0x20 
  37. :::::::::::::::::::::*/
  38. void    Cm__B()
  39. {
  40. static    UNchar    ss[2]={"  "};
  41. //ss[1]='!'+ボタンNo.
  42. OutData(2,ss);
  43. }
  44. /*::::::: [__V] ::::::::
  45.     *---------------  ファームウエアのチェックコマンド
  46.         *  26byte [70170???]   (Drawing Slateの場合)
  47. :::::::::::::::::::::*/
  48. void    Cm__V()
  49. {
  50. static    UNchar    ss[26]={"70170  "};
  51. OutData(26,ss);
  52. }
  53. /*::::::: [C] ::::::::
  54.     *--------------- RS232c設定
  55. :::::::::::::::::::::*/
  56. void    CmC()
  57. {
  58. int    j;
  59. for(j=0;j<5;j++)
  60.     ChrRead();/* ICP++ */
  61. }
  62. /*-------------------------------------------------------------------*/
  63. struct    {
  64.     char    *syn;    //コマンド
  65.     void    (*sub)();
  66. } jp[]={
  67.     {"?",    CmHatena},
  68.     {"__V",    Cm__V},
  69.     {"__B",    Cm__B},
  70.     {"VS",    CmVS},
  71.     {"C",    CmC},        //ESC+%Cxxxは 文字数決まり
  72.     0,0
  73. };
  74.  
  75. void    foo()
  76. {
  77. /*
  78. extern    int    InpESC;        //ESCフラグ
  79. extern    UNchar    *InpChPt;    //チェック開始ポインタ ('%'の場所)
  80. extern    UNchar    *InpPt;        //管理ポインタ
  81. extern    UNchar    *InpBuf,*InpBuf_E;
  82. */
  83.  
  84. int    i,j,m,n,l;
  85. UNchar    *s,*d,*ss,*c;
  86.  
  87. ICP=InpChPt;        //'%'か'@'の場所
  88. for(;;){
  89.     i=*ICP;
  90.     if ( i=='?' ){
  91.         ;
  92.     } elif ( i=='%' || i=='@' ){
  93.         ChrRead();/* ICP++ */
  94.     } else {
  95.         break;    //えらー||終了
  96.     }
  97.     ss=ICP;
  98.     for(l=0;;l++){
  99.         s=ss;
  100.         if ( (c=jp[l].syn)==0 )
  101.             break;
  102.         i=strlen(c);    //inline
  103.         for(j=0;j<i;j++)
  104.             if ( *s++ != *c++ )
  105.                 break;
  106.         if ( j<i ){
  107.             /*コマンド処理無し*/
  108.             ;
  109.         } else {
  110.             for(j=0;j<i;j++)
  111.                 ChrRead();/* ICP++ */
  112.             jp[l].sub();
  113.             break;
  114.         }
  115.     }
  116.     NextCom();
  117. }
  118. }
  119. /********次のコマンドまで(CR|@|0) pointer inc ********/
  120. void    NextCom()
  121. {
  122. int    i;
  123. if ( *ICP==0 || *ICP==0xD || *ICP=='@' || *ICP=='?' )
  124.     return;
  125. ChrRead();/* ICP++ */
  126. for(;;){
  127.     if ( *ICP==0 || *ICP==0xD || *ICP=='@' || *ICP=='?' )
  128.         return;
  129.     ChrRead();/* ICP++ */
  130. }
  131. }
  132. /********数値リード pointer inc ********/
  133. int    NunRead()
  134. {
  135. int    i,r;
  136. r=0;
  137. for(;;){
  138.     i=*ICP;
  139.     if ( i<'0' || i>'9' )
  140.         break;
  141.     r=r*10+(i-'0');
  142.     ChrRead();/* ICP++ */
  143. }
  144. return(r);
  145. }
  146. /********データリード pointer inc ***********/
  147. void    ChrRead()
  148. {
  149. int    i;
  150. i=*ICP++;
  151. if ( ICP==InpBuf_E )
  152.     ICP=InpBuf;
  153. }
  154.